bitkeeper revision 1.1159.1.5 (4113a9f3PDFYg7EjovC2RDHcOb74rA)
authoriap10@tetris.cl.cam.ac.uk <iap10@tetris.cl.cam.ac.uk>
Fri, 6 Aug 2004 15:55:31 +0000 (15:55 +0000)
committeriap10@tetris.cl.cam.ac.uk <iap10@tetris.cl.cam.ac.uk>
Fri, 6 Aug 2004 15:55:31 +0000 (15:55 +0000)
2.6 block device backend fix -- we weren't allowing whole disks to be exported.

linux-2.6.7-xen-sparse/drivers/xen/blkback/vbd.c

index a180707ef424cc47d7eb46517740891b57536104..765f467608840d221f655bcbf3c2b814cf24324d 100644 (file)
@@ -145,16 +145,20 @@ void vbd_grow(blkif_be_vbd_grow_t *grow)
     }
     /* XXXcl maybe bd_claim? */
 
-    if ( (x->bdev->bd_disk == NULL) || (x->bdev->bd_part == NULL) )
+    if ( (x->bdev->bd_disk == NULL) )
     {
         DPRINTK("vbd_grow: device %08x doesn't exist.\n", x->extent.device);
         grow->status = BLKIF_BE_STATUS_EXTENT_NOT_FOUND;
         blkdev_put(x->bdev);
         goto out;
     }
-   
-    /* get size in sectors */
-    sz = x->bdev->bd_part->nr_sects;
+
+    /* get size in sectors */   
+    if ( x->bdev->bd_part )
+        sz = x->bdev->bd_part->nr_sects;
+    else
+        sz = x->bdev->bd_disk->capacity;
+
 #else
     if( !blk_size[MAJOR(x->extent.device)] )
     {